<?php
/*
 * estudo de padrões de projetos com php
 * author: fabricio s costa
 * version: 1.0
 * site: http://fabriciojf.com
 */

class Pagina {

    //Propriedade Estática referenciando um tipo da mesma Classe
    private $proximaPagina = 0;
    private $paginaAnterior = 0;
    private $objeto;

    /**
     * @param <type> $nopagina = numero da pagina requisitada
     * @param <type> $classe = o tipo de objeto requisitado ex: Post
     * @return <type> lista de objetos
     */
    public function paging($nopagina, $classe, $limit) {
        require_once('com/fabriciojf/persistence/' . $classe . 'DAO.class.php');
        if ($nopagina > 0) {
            $pagina = ($nopagina - 1) * $limit;
        } else {
            $pagina = 0;
        }
        $className = $classe . 'DAO';
        $dao = new $className();
        $newDao = new $dao;

        $this->proximaPagina = -1;
        $this->paginaAnterior = $nopagina - 1;

        if ($newDao->listAll($pagina + $limit,1)) {
            $this->proximaPagina = $nopagina + 1;
        }
        $this->objeto = $dao->listAll($pagina,$limit);
    }

    public function pagingLocalizar($nopagina, $termo) {
        require_once('com/fabriciojf/persistence/PostDAO.class.php');
        
        $limit = 10;
        $pagina = ($nopagina - 1) * $limit;
        $postDao = new PostDAO();

        $this->proximaPagina = -1;
        $this->paginaAnterior = $nopagina - 1;

        if ($postDao->findForConteudo($pagina + $limit, 1, $termo)) {
            $this->proximaPagina = $nopagina + 1;
        }
        $this->objeto = $postDao->findForConteudo($pagina, $limit, $termo);
    }
    
    public function getObjeto() {
        return $this->objeto;
    }

    public function getProximaPagina() {
        return $this->proximaPagina;
    }

    public function getPaginaAnterior() {
        return $this->paginaAnterior;
    }

    public function setObjeto($objeto) {
        $this->objeto = $objeto;
    }

    public function setProximaPagina($proximaPagina) {
        $this->proximaPagina = $proximaPagina;
    }

    public function setPaginaAnterior($paginaAnterior) {
        $this->paginaAnterior = $paginaAnterior;
    }

}
?>
